package com.easylinkin.linkappapi.meterbilling.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.meterbilling.entity.MeterDeviceConfig;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface MeterDeviceConfigService extends IService<MeterDeviceConfig>{

    /***
     * 分页查询
     * @param page
     * @param meterDeviceConfig
     * @return
     */
    Page getMeterDeviceConfigList(Page page, MeterDeviceConfig meterDeviceConfig);

    /***
     * 查询
     * @param meterDeviceConfig
     * @return
     */
    List<MeterDeviceConfig> getMeterDeviceConfigList(MeterDeviceConfig meterDeviceConfig);

    /***
     * 查询
     * @param meterDeviceConfig
     * @return
     */
    List<MeterDeviceConfig> getDeviceAll(MeterDeviceConfig meterDeviceConfig);

    /***
     * 查询单个
     * @param meterDeviceConfig
     * @return
     */
    MeterDeviceConfig getMeterDeviceConfig(MeterDeviceConfig meterDeviceConfig);

    int batchInsert(List<MeterDeviceConfig> list);

    /***
     * 修改或者新增
     * @param meterDeviceConfig
     */
    void saveEntity(MeterDeviceConfig meterDeviceConfig);

    /***
     * 批量设置
     * @param meterDeviceConfig
     */
    void  batchConfig(MeterDeviceConfig meterDeviceConfig);

    /***
     * 批量删除
     * @param meterDeviceConfig
     */
    void removeIds(MeterDeviceConfig meterDeviceConfig);

    /***
     * 下载导入模板
     * @param request
     * @param response
     */
    void getImportTemplate(HttpServletRequest request, HttpServletResponse response);

    /**
     * 导入数据
     *
     * @param file xls文件
     * @return 操作结果
     */
    Map<Integer, String> importData(MultipartFile file);

    /***
     * 导出
     * @param meterDeviceConfig
     * @param request
     * @param response
     */
   void exportData(MeterDeviceConfig meterDeviceConfig, HttpServletRequest request, HttpServletResponse response);
}
